﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sistema.Util;
using System.Xml;
using System.Security.Cryptography.X509Certificates;
using Sistema.NFe.Mapeamento.ConsultaStatus;

namespace Sistema.NFe.WebServiceNFe
{
    public class ConsultaStatus:WebServiceNFe
    {
        public ConsultaStatus(): base()
        {
        
        }

        public Mapeamento.RetConsultaStatus.TRetConsStatServ Consultar(X509Certificate2 certificado)
        {
            TConsStatServ mensagem = new TConsStatServ();
            mensagem.cUF = (TCodUfIBGE) base.GetCofUf(base._cUF);
            mensagem.tpAmb =(TAmb)((int) base._tipoAmbiente-1);
            mensagem.xServ = TConsStatServXServ.STATUS;
            mensagem.versao = base.GetVersao(base._versao);

            string xml = new Serializacao().Serializar<Mapeamento.ConsultaStatus.TConsStatServ>(mensagem);
            XmlDocument envio = new XmlDocument();
            envio.LoadXml(xml);
            
            IStatusServico status = base.StatusServico();
            status.DefinirCertificado(certificado);
            status.DefinirCabecalho(((int)base._cUF).ToString(), base.GetVersao(base._versao));
            XmlNode retorno = status.nfeStatusServico(envio);

            return new Serializacao().Deserialize<Mapeamento.RetConsultaStatus.TRetConsStatServ>(retorno.OuterXml);
        }
    }
}
